package com.app.ryjy.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 岗位名称枚举
 */
@AllArgsConstructor
@Getter
public enum JobTitleEnum {
    // 党的机关、国家机关、群众团体和社会组织、企事业单位负责人
    PARTY_AND_STATE_AGENCY_LEADER("党的机关、国家机关、群众团体和社会组织、企事业单位负责人", "10000", -1),
    // 中国共产党机关负责人
    CPC_AGENCY_LEADER("中国共产党机关负责人", "10100", -1),
    // 国家机关负责人
    STATE_AGENCY_LEADER("国家机关负责人", "10200", -1),
    // 民主党派和工商联负责人
    DEMOCRATIC_PARTY_LEADER("民主党派和工商联负责人", "10300", -1),
    // 人民团体和群众团体、社会组织及其他成员组织负责人
    MASS_ORGANIZATION_LEADER("人民团体和群众团体、社会组织及其他成员组织负责人", "10400", -1),
    // 基层群众自治组织负责人
    GRASSROOTS_ORGANIZATION_LEADER("基层群众自治组织负责人", "10500", -1),
    // 企事业单位负责人
    ENTERPRISE_LEADER("企事业单位负责人", "10600", -1),
    // 专业技术人员
    PROFESSIONAL_TECHNICIANS("专业技术人员", "20000", -1),
    // 科学研究人员
    SCIENTIFIC_RESEARCHERS("科学研究人员", "20100", -1),
    // 工程技术人员
    ENGINEERING_TECHNICIANS("工程技术人员", "20200", -1),
    // 农业技术人员
    AGRICULTURAL_TECHNICIANS("农业技术人员", "20300", -1),
    // 飞机和船舶技术人员
    AIRCRAFT_SHIP_TECHNICIANS("飞机和船舶技术人员", "20400", -1),
    // 卫生专业技术人员
    MEDICAL_TECHNICIANS("卫生专业技术人员", "20500", -1),
    // 经济和金融专业人员
    ECONOMIC_FINANCIAL_PROFESSIONALS("经济和金融专业人员", "20600", -1),
    // 法律、社会和宗教专业人员
    LEGAL_SOCIAL_RELIGIOUS_PROFESSIONALS("法律、社会和宗教专业人员", "20700", -1),
    // 教学人员
    TEACHING_STAFF("教学人员", "20800", -1),
    // 文学艺术、体育专业人员
    LITERARY_ARTS_SPORTS_PROFESSIONALS("文学艺术、体育专业人员", "20900", -1),
    // 新闻出版、文化专业人员
    MEDIA_CULTURAL_PROFESSIONALS("新闻出版、文化专业人员", "21000", -1),
    // 其他专业技术人员
    OTHER_PROFESSIONAL_TECHNICIANS("其他专业技术人员", "29900", -1),
    // 办事人员和有关人员
    OFFICE_AND_RELEVANT_PERSONNEL("办事人员和有关人员", "30000", -1),
    // 办事人员
    OFFICE_STAFF("办事人员", "30100", -1),
    // 安全和消防人员
    SECURITY_AND_FIREPERSONNEL("安全和消防人员", "30200", -1),
    // 其他办事人员和有关人员
    OTHER_OFFICE_PERSONNEL("其他办事人员和有关人员", "39900", -1),
    // 社会生产服务和生活服务人员
    SOCIAL_PRODUCTION_AND_LIFE_SERVICES("社会生产服务和生活服务人员", "40000", -1),
    // 批发和零售服务人员
    WHOLESALE_AND_RETAIL_SERVICES("批发和零售服务人员", "40100", -1),
    // 交通运输、仓储和邮政服务人员
    TRANSPORT_STORAGE_POSTAL_SERVICES("交通运输、仓储和邮政服务人员", "40200", -1),
    // 住宿和餐饮服务人员
    ACCOMMODATION_RESTAURANT_SERVICES("住宿和餐饮服务人员", "40300", -1),
    // 信息传输、软件和信息技术服务人员
    IT_SERVICES("信息传输、软件和信息技术服务人员", "40400", -1),
    // 金融服务人员
    FINANCIAL_SERVICES("金融服务人员", "40500", -1),
    // 房地产服务人员
    REAL_ESTATE_SERVICES("房地产服务人员", "40600", -1),
    // 租赁和商务服务人员
    RENTAL_AND_BUSINESS_SERVICES("租赁和商务服务人员", "40700", -1),
    // 技术辅助服务人员
    TECHNICAL_SUPPORT_SERVICES("技术辅助服务人员", "40800", -1),
    // 水利、环境和公共设施管理服务人员
    WATER_ENVIRONMENT_PUBLIC_SERVICE("水利、环境和公共设施管理服务人员", "40900", -1),
    // 居民服务人员
    RESIDENTIAL_SERVICES("居民服务人员", "41000", -1),
    // 电力、燃气及水供应服务人员
    ENERGY_WATER_SUPPLY_SERVICES("电力、燃气及水供应服务人员", "41100", -1),
    // 修理及制作服务人员
    REPAIR_MANUFACTURING_SERVICES("修理及制作服务人员", "41200", -1),
    // 文化、体育和娱乐服务人员
    CULTURAL_SPORTS_ENTERTAINMENT_SERVICES("文化、体育和娱乐服务人员", "41300", -1),
    // 健康服务人员
    HEALTH_SERVICES("健康服务人员", "41400", -1),
    // 其他社会生产和生活服务人员
    OTHER_SOCIAL_SERVICES("其他社会生产和生活服务人员", "49900", -1),
    // 农、林、牧、渔业生产及辅助人员
    AGRICULTURAL_FORESTERY_LIVESTOCK_FISHERY("农、林、牧、渔业生产及辅助人员", "50000", -1),
    // 农业生产人员
    AGRICULTURAL_PRODUCTION("农业生产人员", "50100", -1),
    // 林业生产人员
    FORESTRY_PRODUCTION("林业生产人员", "50200", -1),
    // 畜牧业生产人员
    LIVESTOCK_PRODUCTION("畜牧业生产人员", "50300", -1),
    // 渔业生产人员
    FISHERY_PRODUCTION("渔业生产人员", "50400", -1),
    // 农林牧渔生产辅助人员
    AGRICULTURAL_FORESTERY_LIVESTOCK_FISHERY_SUPPORT("农林牧渔生产辅助人员", "50500", -1),
    // 其他农、林、牧、渔业生产及辅助人员
    OTHER_AGRICULTURAL_FORESTERY_LIVESTOCK_FISHERY("其他农、林、牧、渔业生产及辅助人员", "59900", -1),
    // 生产制造及有关人员
    PRODUCTION_MANUFACTURING("生产制造及有关人员", "60000", -1),
    // 农副产品加工人员
    AGRI_BY_PRODUCTS_PROCESSING("农副产品加工人员", "60100", -1),
    // 食品、饮料生产加工人员
    FOOD_BEVERAGE_PROCESSING("食品、饮料生产加工人员", "60200", -1),
    // 烟草及其制品加工人员
    TOBACCO_PROCESSING("烟草及其制品加工人员", "60300", -1),
    // 纺织、针织、印染人员
    TEXTILE_KNITTING_DYEING("纺织、针织、印染人员", "60400", -1),
    // 纺织品、服装和皮革、毛皮制品加工制作人员
    TEXTILE_CLOTHING_LEATHER("纺织品、服装和皮革、毛皮制品加工制作人员", "60500", -1),
    // 木材加工、家具与木制品制作人员
    WOOD_FURNITURE_MANUFACTURING("木材加工、家具与木制品制作人员", "60600", -1),
    // 纸及纸制品生产加工人员
    PAPER_PRODUCTS_PROCESSING("纸及纸制品生产加工人员", "60700", -1),
    // 印刷和记录媒介复制人员
    PRINTING_MEDIA_COPYING("印刷和记录媒介复制人员", "60800", -1),
    // 文教、工美、体育和娱乐用品制作人员
    CULTURAL_ARTS_ENTERTAINMENT_PRODUCTION("文教、工美、体育和娱乐用品制作人员", "60900", -1),
    // 石油加工和炼焦、煤化工生产人员
    PETROLEUM_COAL_PROCESSING("石油加工和炼焦、煤化工生产人员", "61000", -1),
    // 化学原料和化学制品制造人员
    CHEMICAL_RAW_MATERIALS_MANUFACTURING("化学原料和化学制品制造人员", "61100", -1),
    // 医药制造人员
    MEDICAL_MANUFACTURING("医药制造人员", "61200", -1),
    // 化学纤维制造人员
    CHEMICAL_FIBER_MANUFACTURING("化学纤维制造人员", "61300", -1),
    // 橡胶和塑料制品制造人员
    RUBBER_PLASTIC_MANUFACTURING("橡胶和塑料制品制造人员", "61400", -1),
    // 非金属矿物制品制造人员
    NON_METALLIC_MINERAL_MANUFACTURING("非金属矿物制品制造人员", "61500", -1),

    // 采矿人员
    MINING_WORKERS("采矿人员", "61600", -1),
    // 金属冶炼和压延加工人员
    METAL_SMELTING_AND_PROCESSING("金属冶炼和压延加工人员", "61700", -1),
    // 机械制造基础加工人员
    MECHANICAL_MANUFACTURING_BASIC_PROCESSING("机械制造基础加工人员", "61800", -1),
    // 金属制品制造人员
    METAL_PRODUCTS_MANUFACTURING("金属制品制造人员", "61900", -1),
    // 通用设备制造人员
    GENERAL_EQUIPMENT_MANUFACTURING("通用设备制造人员", "62000", -1),
    // 专用设备制造人员
    SPECIAL_EQUIPMENT_MANUFACTURING("专用设备制造人员", "62100", -1),
    // 汽车制造人员
    AUTOMOBILE_MANUFACTURING("汽车制造人员", "62200", -1),
    // 铁路、船舶、航空设备制造人员
    RAIL_SHIP_AIRCRAFT_EQUIPMENT_MANUFACTURING("铁路、船舶、航空设备制造人员", "62300", -1),
    // 电气机械和器材制造人员
    ELECTRICAL_MECHANICAL_EQUIPMENT_MANUFACTURING("电气机械和器材制造人员", "62400", -1),
    // 计算机、通信和其他电子设备制造人员
    COMPUTER_COMMUNICATION_ELECTRONIC_EQUIPMENT_MANUFACTURING("计算机、通信和其他电子设备制造人员", "62500", -1),
    // 仪器仪表制造人员
    INSTRUMENT_MANUFACTURING("仪器仪表制造人员", "62600", -1),
    // 废弃资源综合利用人员
    WASTE_RESOURCE_RECYCLING("废弃资源综合利用人员", "62700", -1),
    // 电力、热力、气体、水生产和输配人员
    ENERGY_WATER_SUPPLY_MANUFACTURING("电力、热力、气体、水生产和输配人员", "62800", -1),
    // 建筑施工人员
    CONSTRUCTION_WORKERS("建筑施工人员", "62900", -1),
    // 运输设备和通用工程机械操作人员及有关人员
    TRANSPORT_EQUIPMENT_AND_ENGINEERING_OPERATORS("运输设备和通用工程机械操作人员及有关人员", "63000", -1),
    // 生产辅助人员
    PRODUCTION_SUPPORT("生产辅助人员", "63100", -1),
    // 其他生产制造及有关人员
    OTHER_PRODUCTION_MANUFACTURING("其他生产制造及有关人员", "69900", -1),
    // 军人
    SOLDIER("军人", "70000", -1),
    // 不便分类的其他从业人员
    OTHER_UNCLASSIFIED_WORKERS("不便分类的其他从业人员", "80000", -1);


    private final String desc;
    private final String code;
    private final int bizCode;

    /**
     * 根据 bizCode 获取 code
     *
     * @param bizCode bizCode
     * @return code
     */
    public static String getCodeByBizCode(int bizCode) {
        for (JobTitleEnum jobTitle : values()) {
            if (jobTitle.getBizCode() == bizCode) {
                return jobTitle.getCode();
            }
        }
        throw new RuntimeException("bizCode 不存在");
    }

    public static void main(String[] args) {
        System.out.println(JobTitleEnum.getCodeByBizCode(-1)); // Test the method
    }
}
